﻿#ifndef LIBSTOOLCOMMON_H
#define LIBSTOOLCOMMON_H
#include <QObject>

#define  MAX_SPECTROMETER   10
#define  ERR_STOP           -2

#define  PULSE_TO_MM       (9.0/1000)      //脉冲到mm的转换比例
#define  TIMEOUT            60


typedef struct {
    int ipresAlmAddr;                          //压力报警地址
    int ileakageAlmAddr;                       //漏水报警
    int ifrontLimAddr;                           //前限位地址
    int ibackLimAddr;                         //后限位地址
    int ilocalRmoteAddr;                           //本地远程开关地址
    int iStartSwitchAddr;                         //启动停止开关地址
    int iLocaltionAddr;
} SwitchInputAddr;

typedef struct {
    int ilocalAlmAddr;                          //本地故障报警，硬件故障
    int iremoteAlmAddr;                         //远程故障报警，软件故障
    int istandbyAddr;                           //待机灯地址
    int imeasStatusAddr;                       //开始测试状态灯
    int isolenoidvalveAddr;                     //电磁阀地址
    int iresetTestAddr;                        //复位测试状态地址
    int ilocaltionlaserAddr;                    //开关定位激光地址
} SwitchOutputAddr;


typedef struct {
    int iMeasureNum;                          //测量次数
    int iMasterIndex;                         //主通道光谱仪索引
    int averageNum;                           //显示一次光谱采集的数据次数
    int integralTime;                         //积分时间，单位ms
    double integralDelayTime;                 //积分延迟时间，单位：us
    double dDelayTimes;                       //延迟积分时间
    double dFixedDelayTimes;                  //系统固定延时
    int LaserErosionTime;                      //激光烧蚀时间
    QString dataSaveDir;                    //数据存储路径

} DetectedPara;

typedef struct CommunctionParaTag{
    QString sComPortID;
    int iBaudRate;
    char Parity;
    int iDataBit;
    int iStopBit;
    int iAddr;        //从机地址或通道
}CommunctionPara;


typedef struct {
    int deviceAddr;                    //设备地址
    int communicationAddr;             //通信地址
    int stepFreqAddr;                  //步进频率
    int subdivisionAddr;               //细分数
    int acceleratedCoeffAddr;
    int torqueAddr;                    //保持转矩系数地址
    int encoderSpeedAddr;                  //编码器速度
    int motorStatusAddr;               //电机状态及限位

    int relativeRunAddr;               //相对运动地址
    int absoluteRunAddr;               //绝对运动
    int resetMotorPositionAddr;        //重置当前位置地址

    int quickMotorOperationAddr;          //快速电机操作地址
    int functionOperationAddr;            //功能操作地址

} FLSTControlAddr;

typedef struct RouteInfoTag{
    QString ID;             //标识，使用平移台位置转为字符串作为该项路径信息的标识
    double dMPFPosition;              //平移台位置
    double dMotorPosition;            //电机中心位置
    double dCenterOffset;            //电机中心偏移位置
    int iPointNumber;                 //测量点数
} RouteInfo;



#endif // LIBSTOOLCOMMON_H
